There have been significant advancements related to multi-tier (e.g. 2-tier, k-tier) virtual machine architectures in computing environments, and particularly multi-tasking, multi-processing, and multi-threading of job assignments therein.
To complete a job having tasks, process(es) are instantiated in a run-time environment. It is possible to ascertain the ‘coupling’ as between tasks of a single job, or even as between different jobs. The ‘coupling’ of items in computer technology is generally understood and falls into two primary categories—‘loosely-coupled’ or ‘tightly-coupled’, referring generally to the degree of interdependency between the individual items. With regard to job processing, interdependency of tasks of job can be a function of the extent to which data is needed by one entity from another entity. The more interdependency that exists, the tighter the coupling. The looser the coupling, the higher the scalability of jobs. Even dependencies may be processed by different entities when the job is processed from a common heap space.
There are three primary types of computing models: parallel, grid, and distributed computing. Cloud computing is a condensed form of distributed and grid computing. Data centers are an element of an infrastructure-as-a-service (IaaS) cloud computing environment.
Improving resource utilization can be important for achieving cost effectiveness. In legacy data centers, low utilization has long been an issue. Servers in a typical data center may be operated at 10-50% of their maximum utilization level, for instance. For a data center, or a subset of servers in a data center that mainly handles applications with high-performance computing needs and runs parallel jobs, frequently this this low utilization can be a significant problem.
For running parallel jobs in a distributed cloud environment, one challenge is that, as in cases of parallel job requirements, selecting and managing a number of nodes to run. A set of nodes may be fragmented by parallel jobs with different node number requirements. If the number of available nodes cannot satisfy the requirement of an incoming job, nodes may remain idle and their utilization low until enough nodes are available to process the incoming job. For instance, a basic, but often used, batch scheduling algorithm for parallel jobs is first-come, first served (FCFS). This specifies a number of nodes required and the scheduler processes jobs according to the order of their arrival. When there is a sufficient number of nodes to process the job at the head of the queue, the scheduler dispatches the job to run on these nodes; otherwise, it waits until jobs currently running finish and release enough nodes for the next job to process. This causes some of the undesirable low utilization.